﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Cfg;
using FirebirdSql.Data.FirebirdClient;
using NHibernate.Tool.hbm2ddl;
using NHibernate;

namespace MSH.Common.Helpers
{
    public static class NHibernateHelper
    {
        private static Configuration cfg;
        private static ISessionFactory sessionFactory;

        static NHibernateHelper()
        {
            cfg = new Configuration();
            sessionFactory = cfg.Configure().BuildSessionFactory();
        }

        /// <summary>
        /// Creeërt een volledign nieuw database schema
        /// </summary>
        public static void SchemaExport()
        {            
            new SchemaExport(cfg).Create(true, true);
        }

        /// <summary>
        /// Werkt het database schema bij
        /// </summary>
        public static void SchemaUpdate()
        {
            new SchemaUpdate(cfg).Execute(true, true);
        }

        /// <summary>
        /// Geeft de SessionFactory
        /// </summary>
        public static ISessionFactory GetSessionFactory()
        {
            return sessionFactory; 
        }

        /// <summary>
        /// Geeft de huidige ISession van de WCF context
        /// </summary>
        /// <remarks>
        /// Roep dit alleen aan vanuit een WCF webservice operatie.
        /// </remarks>
        public static ISession GetCurrentSession()
        {
            return sessionFactory.GetCurrentSession();
        }

    }
}
